NocoBaseのACLでカラム表示を制限する
こんにちは、栁澤です。
今回は、NocoBaseでユーザーのロールに応じたカラムの表示権限制御をやってみます。
困っていたこと
コレクションのうち、あるロールを持つユーザーのみ特定のカラムを表示でき、それ以外のユーザーは表示できないようにしたい。
例えば、従業員情報を格納するコレクションのうち、住所や年齢などの機微な情報は一般ユーザーが自由に見れてしまってはマズいため非公開、
同じコレクションの氏名や社員番号・メールアドレスなどの情報は公開にしたい。
NocoBaseのACLを活用することで、そのような要件にも対応ができるようです。
今回は下記CatManagerの「ねんれい」カラムがMemberロールで表示されないよう設定してみます。
どう対応すればいいの?
ロール・カラムごとに権限を設定する
設定メニューから「Users & Permissions」編集画面へ遷移し、「Roles & Permissions」タブを開きます。
制限したいロールを選択し、「Data sources」から表示カラムを制限するデータソースの設定を開きます。
「権限の設定」ドロワーが開きますので、「コレクションの操作権限」タブを開き、表示カラムを制限するコレクションの設定を開きます。
更に「権限設定」ドロワーが開きます。
まず「権限ポリシー」を個別設定
にします。
すると各列の各操作に対する権限を設定する項目が表示されます。
ここで表示させたい列の表示権限に☑を入れ送信します。
実証
今回、Memberロールに対してCatsコレクションのname列のみ表示を許可しました。
この状態でMemberロールのユーザーでログインし、CatManagerを表示してみます。
表示権限を有効にしたname列のみ表示され、「ねんれい」列は表示されなくなっています。
また、Memberロールには操作権限を一切与えていないため、操作カラムも空になっています。
上記の手順を行うことで、同じページでも付与されているロールによって表示される情報を制御することができました。